package com.hhkj.admin.student.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hhkj.admin.student.common.extend.BatchStudentModel;
import com.ruoyi.common.core.domain.BizBaseEntity;
import com.ruoyi.common.valid.VEdit;
import lombok.*;
import lombok.experimental.Accessors;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 学员批次管理对象 t_student_batch
 *
 * @author ruoyi
 * @since 2023-05-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_student_batch")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class StudentBatch extends BizBaseEntity {
    private static final long serialVersionUID = 1L;

    /** 批次号 */
    @Excel(name = "批次号")
    private String batchNum;

    /** 所属机构id,关联sys_user表 */
    @Excel(name = "所属机构id,关联sys_user表")
    private Long insId;

    /**
     * 缴费状态 1已缴费 0未缴费
     */
    @Excel(name = "缴费状态 1已缴费 0未缴费")
    private Long payFlag;

    /**
     * 缴费时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "缴费时间", width = 30, format = "yyyy-MM-dd")
    private Date payDate;

    /**
     * 缴费金额
     */
    private BigDecimal payPrice;

    /**
     * 缴费凭据图片
     */
    private String payProofUrl;

    /**
     * 状态 1未审核 2已审核
     * 批次下有学员审核了，该批次就为已审核
     */
    @Excel(name = "状态 1未审核 2已审核")
    private String status;

    /**
     * 查询付款时间-开始时间
     */
    @TableField(exist = false)
    private Date payDateStart;

    /**
     * 查询付款时间-结束时间
     */
    @TableField(exist = false)
    private Date payDateEnd;

    /**
     * 机构名称
     */
    @TableField(exist = false)
    private String nickName;

    /**
     * 导入时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date importDate;

    /**
     * 学员课程关联信息
     */
    @TableField(exist = false)
    private List<StudentCourse> studentCourseList;

    /**
     * 学员数量
     */
    @TableField(exist = false)
    private Integer studentNum;

    /**
     * 学员总缴费金额
     */
    @TableField(exist = false)
    private BigDecimal studentTotalPrice;

    /**
     * 学员导出数据
     */
    @TableField(exist = false)
    private List<BatchStudentModel> studentModelList;

    /**
     * 批次主键idList
     */
    @TableField(exist = false)
    private List<Long> idList;

    /**
     * 工作表格
     */
    @TableField(exist = false)
    private Workbook workbook;

    /**
     * 导入时间查询-开始时间
     */
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTimeStart;

    /**
     * 导入时间查询-结束时间
     */
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTimeEnd;

    /** 姓名 */
    @TableField(exist = false)
    private String name;

    /** 身份证号码 */
    @TableField(exist = false)
    private String idCard;

    /** 状态 */
    @TableField(exist = false)
    private String studentAuditStatus;


    @Override
    @NotNull(message = "唯一主键不能为空", groups = {VEdit.class})
    public Long getId() {
        return super.getId();
    }
}
